package reflect;

import domin.Student;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/*
反射类中的构造方法
getDeclaredConstructors() 反射所有的
getConstructors() 反射public修饰的
getConstructor(String.class, int.class) 返回单个的，public修饰的构造方法
getDeclaredConstructors(String.class, int.class) 所有的
newInstance  根据构造方法对象实例化
setAccessible（true） 放开修饰符（暴力获取后都要加，不然权限不够）
*/
public class Demo2 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        //获取类的字节码文件
        Class<Student> studentClass = Student.class;
        Constructor<Student> constructor = studentClass.getDeclaredConstructor(String.class, int.class);
        constructor.setAccessible(true);
        System.out.println(constructor);
        //通过构造方法对象，完成实例化
        Student student = constructor.newInstance("zz",18);
        System.out.println(student);
    }

    private static void method1(Class<Student> studentClass) {
        //反射构造方法对象
        Constructor<?>[] constructors = studentClass.getConstructors();
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor);
        }
    }
}
